// 测试连接 MongoDB 数据库

// 导入 mongoose 模块 (实际上是导入了一个实例)
const mongoose = require('mongoose');

const url = 'mongodb://localhost:27017/ecut';

const options = {
    useNewUrlParser: true,
    useUnifiedTopology: true
}

// 建立并返回数据库连接
// createConnection函数会返回数据库连接而不是将连接保存到 mongoose.connection 上
const connection = mongoose.createConnection(url, options);

// 创建一个规则 ( 类似于指定表中的表结构 )
const studentSchema = new mongoose.Schema({
    name: { type: String, default: '' },
    gender: { type: String, default: '' },
    birthdate: { type: Date, default: null },
    hometown: { type: String, default: '' }
}, {
    versionKey: false /* false 可以避免在 集合 中产生 __v 字段 */
});

// model 第三个参数表示 数据库中的 集合名称 ( 类似于"表名" )
// 若未指定 model 第三个参数，则采用第一个参数的复数形式来表示 集合名称
// 根据规则创建一个 Model 【注意这里通过connection来调用model函数】
const Student = connection.model('Student', studentSchema, 'studentCollection');

// 使用参数给定的实例对象来构造一个 Student 实例 (实际上是个文档(document))
const stu = new Student({
    name: '梁启超',
    gender: '男',
    birthdate: new Date('1850-10-20'),
    hometown: '中国'
});

// 使用 model 的 save 函数完成保存操作
stu.save(function(error) {
    if (error) {
        console.log('保存失败', error);
    } else {
        console.log('保存成功');
    }
    connection.close();
});